Digi.Py Integrated Circuit Timing Analysis Tool
A custom built Python library supporting Cadence ViVA waveform exports for expert analysis on timing paths for digital designs.
Available Tools
The current functions available are compatible with any Cadence ViVA waveform exports.
- Import_Waveform(csv_name): Imports the waveforms into numpy arrays of
- Extract_Edges: Linearly interpolates between the two points around for edge extraction into numpy array based on returned frequency
- Get_AvgRT: Returns the average rise time for the desired signal
- Get_AvgFT: Returns the average fall time for the desired signal
- Get_FGHz: Estimates clock frequency based on edge behaviors
- Set_FGHz: Manually set the clock frequency to tell Digi.Py how to define the edge mappings
Statistics and Mathematics
The Galton Board is a classic demonstration of the Central Limit Theorem. As balls fall, they have a 50% probability of bouncing left or right at each peg. Each row acts as an independent Bernoulli trial.
For a board with 16 rows, the binomial distribution is:
As the number of rows () increases, the discrete binomial distribution smoothly converges into a continuous Gaussian normal curve (). The expected mean () and standard deviation () for our 16-row setup are calculated as follows:
Mean
Standard Deviation

Goal for final simulation. Provided by Hunter Adams and Bruce Land
// Fixed-Point Physics Structs
typedef struct {
fix15 x;
fix15 y;
fix15 vx;
fix15 vy;
int last_peg;
} Ball;
// State Machine Debouncing
case MAYBE_PRESSED:
if (keypress == possible_press && keypress == 0) {
switch (button_state) {
case RESET:
reset_histogram();
button_state = ADJUST_BALLS;
break;
// State transitions...
}
debounce_state = PRESSED;
}
User Control
A hardware potentiometer mapped to the ADC allows real-time tuning of simulation parameters.